public class NextDate {
	public static void main(String[] args) {
		// 示例输入
		int year = 2011;
		int month = 3;
		int day = 7;

		// 计算下一天的日期
		int[] nextDate = nextDate(year, month, day);

		// 输出结果
		System.out.printf("输入日期：%d年%d月%d日\n", year, month, day);
		System.out.printf("后一天日期：%d年%d月%d日\n", nextDate[0], nextDate[1], nextDate[2]);
	}

	public static int[] nextDate(int year, int month, int day) {
		// 计算下一天日期的逻辑
		int nextYear = year;
		int nextMonth = month;
		int nextDay = day + 1;

		// 判断是否需要进位处理
		if (isLeapYear(year)) {
			// 闰年的二月有29天
			if (month == 2) {
				if (nextDay > 29) {
					nextDay = 1;
					nextMonth++;
				}
			}
		} else {
			// 非闰年的二月有28天
			if (month == 2) {
				if (nextDay > 28) {
					nextDay = 1;
					nextMonth++;
				}
			}
		}

		// 大月份有31天的处理
		if (month == 1 || month == 3 || month == 5 || month == 7 ||
				month == 8 || month == 10 || month == 12) {
			if (nextDay > 31) {
				nextDay = 1;
				nextMonth++;
				if (nextMonth > 12) {
					nextMonth = 1;
					nextYear++;
				}
			}
		}

		// 小月份有30天的处理
		if (month == 4 || month == 6 || month == 9 || month == 11) {
			if (nextDay > 30) {
				nextDay = 1;
				nextMonth++;
			}
		}

		// 返回下一天的年月日
		return new int[]{nextYear, nextMonth, nextDay};
	}

	// 判断是否为闰年的方法
	public static boolean isLeapYear(int year) {
		return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
	}
}